let obj ={  //先定义一个obj对象
    name: '曾宇杰',
    age: '22',
    girlFriend:{
        name:'Zhongmengqi',
        age:'21'
    },
    testFunction(){
        console.log('test')
    },
    date: new Date(),
    map: new Map([['x', 1]]),
    set: new Set([2, 3, 4]),
    arr: [ { a: 1 } ],
    regex: /abc/g,
}

let obj2 = JSON.parse(JSON.stringify(obj)) //使用json.stringify(obj)与json.parse的方式进行深拷贝
//会丢失了函数,undefined,symbol,Date、RegExp、Map、Set、BigInt、Error、Buffer 等特殊对象
obj2.girlFriend.age='18'
console.log(obj) //修改obj2不会影响到obj
console.log(obj2) 


//方法二:使用structuredClone,这个是浏览器环境中运行的api,不支持node环境运行
// let obj3 = structuredClone(obj)
// console.log(obj3)


//方法三:使用lodash库中的函数进行深拷贝
const {cloneDeep} = require('lodash')
let obj3 = cloneDeep(obj)
console.log('obj3',obj3)

